package com.objectproject.main.service.system;


import java.util.ArrayList;
import java.util.Locale;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.objectproject.main.dao.MyObjectDAOImpl;
import com.objectproject.main.dao.MyObjectHierarchyDAOImpl;
import com.objectproject.main.model.MyLocale;
import com.objectproject.main.model.MyObject;
import com.objectproject.main.model.MyProperty;
import com.objectproject.main.service.system.policy.PolicyAndConfigurationRepository;


@Service
public class MyObjectHierarchyResolver {
	
	@Autowired
	MyObjectDAOImpl myObjectDAOImpl;
	
	@Autowired
	MyLocaleResolver myLocaleResolver;
	
	@Autowired
	MyObjectHierarchyDAOImpl myObjectHierarchyDAOImpl;
	
	public ArrayList<MyObject> getSuperObjectsOf(MyObject myObject, MyLocale myLocale){
		return null;
	}
	
	public ArrayList<MyObject> getSubObjectsOf(MyObject myObject, MyLocale myLocale){
		return null;
	}
	
	public ArrayList<MyObject> getAncestorObjectsOf(MyObject myObject, MyLocale myLocale){
		return null;
	}
	
	public ArrayList<MyObject> getDescendantObjectsOf(MyObject myObject, MyLocale myLocale){
		return null;
	}
	
	public ArrayList<MyObject> getIntefacesOf(MyObject myObject, MyLocale myLocale){
		return null;
	}
	public ArrayList<MyObject> getAllFinalObjectsOf(MyObject myObject, MyLocale myLocale){
		return null;
	}
	
	public boolean isSuperObjectOf(MyObject superObject, MyObject myObject){
		return false;
	}
	
	public boolean isSubObjectOf(MyObject superObject, MyObject myObject){
		return false;
	}
	public MyObject getRootObject(){
		return myObjectDAOImpl.selectMyObjectById(PolicyAndConfigurationRepository.ROOT_OBJECT_ID);
	}
	public boolean isInstanceOf(MyObject myObject, MyObject superMyObject){
		return false;
	}
	public boolean hasSuperObject(){
		return false;
	}
	
	
	/**
	 * calculate object's depth.
	 * @return depth of object
	 */
	public int calculateDepthOf(MyObject myObject){
		return 0;
	}
	
	
	
}
